// 状态管理
import { defineStore } from 'pinia'
import inventoryApi from '../api/inventory'

// 创建一个 Pinia 对象
export const useInventoryStore = defineStore('inventory', {
  state: () => ({
    inventoryList: []
  }),

  // 启用持久化
  persist: true,

  actions: {
    // 获取库存列表
    async getInventory(params) {
      try {
        const res = await inventoryApi.getInventory(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取库存列表失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取库存列表失败')
        return null
      }
    },
    // 获取商品列表
    async getGoods(params) {
      try {
        const res = await inventoryApi.getGoods(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取商品列表失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取商品列表失败')
        return null
      }
    },
    // 获取仓库列表
    async getWarehouse(params) {
      try {
        const res = await inventoryApi.getWarehouse(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取仓库列表失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取仓库列表失败')
        return null
      }
    },
    
    // 获取库存明细
    async getInventoryDetail(params) {
      try {
        const res = await inventoryApi.getInventoryDetail(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取库存明细失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取库存明细失败')
        return null
      }
    },
    // 获取仓库区域列表
    async getAreaInfo(params) {
      try {
        const res = await inventoryApi.getAreaInfo(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取仓库区域列表失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取仓库区域列表失败')
        return null
      }
    },
    // 获取仓库信息
    async getHouseInfo(params) {
      try {
        const res = await inventoryApi.getHouseInfo(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取仓库信息失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取仓库信息失败')
        return null
      }
    },

    // 获取商品库存信息
    async getInventoryByGoodsId(params) {
      try {
        const res = await inventoryApi.getInventoryByGoodsId(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '获取商品库存信息失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '获取商品库存信息失败')
        return null
      }
    },
    // 更新商品库存信息
    async putInventoryInfo(params) {
      try {
        const res = await inventoryApi.putInventoryInfo(params)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '更新商品库存信息失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '更新商品库存信息失败')
        return null
      }
    },
    // 添加库存记录
    async addInventoryLog(body) {
      try {
        const res = await inventoryApi.addInventoryLog(body)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '添加库存记录失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '添加库存记录失败')
        return null
      }
    },
    //添加库存
    async addInventory(body) {
      try {
        const res = await inventoryApi.addInventory(body)
        if (res.code === 0) {
          return res.data
        } else {
          ElMessage.error(res.msg || '添加库存失败')
          return null
        }
      } catch (error) {
        ElMessage.error(error.message || '添加库存失败')
        return null
      }
    }
    
  }
})